package com.sen.rbac.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;
import java.util.Set;

/**
 * @author esjiang
 */
@Data
public class SysResourceVO implements Serializable ,Comparable{

    @JsonProperty(value = "id",index = 1)
    private String code ;
    /**
     * 父资源编码
     */
    @JsonProperty(value = "pid",index = 2)
    private String parentCode;

    /**
     * 资源名称
     */
    private String name;

    /**
     * 请求路径
     */
    private String url;

    /**
     * 资源类型 1，系统；2，模块；3，菜单；4，组件；5，因子
     */
    private String type;

    /**
     * 是否隐藏 1：是；0：否
     */
    private String hidden;

    /**
     * 是否鉴权 1：是；0：否
     */
    private String authorization;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 前端路由
     */
    private String route ;

    /**
     * 图标
     */
    private String icon ;


    /**
     * 子节点
     */
    private Set<SysResourceVO> children ;

    @Override
    public int compareTo(Object o) {
        SysResourceVO o1 = (SysResourceVO) o;
        if (this.getSort().intValue() == o1.getSort().intValue()){
            return this.hashCode() - o.hashCode();
        }
        return this.getSort() - o1.getSort();
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SysResourceVO that = (SysResourceVO) o;
        return code.equals(that.code);
    }

    @Override
    public int hashCode() {
        return Objects.hash(code);
    }
}
